import { login, getuserInfo, getuserInfoById } from '../../api/user'
import { resetRouter } from '@/router/index'
const state = {
  token: localStorage.getItem('token') || '',
  // 用户基础信息
  userInfo: {}

}
const mutations = {
  // 设置settoken储存数据
  setToken(state, token) {
    // 将数据存储到本地
    localStorage.setItem('token', token)
    state.token = token // 设置token  只是修改state的数据  123 =》 1234
    // vuex变化 => 缓存数据
  },
  // 把用户信息保存到state
  setuserInfo(state, data) {
    // 用{...data}方式复制对象,得到不同的内存地址,比较安全
    state.userInfo = { ...data }
  },
  // 移除数据
  removeToken(state) {
    state.token = ''
    localStorage.removeItem('token')
  },
  removeUserInfo(state) {
    state.userInfo = {}
  }
}
const actions = {
  // 发送异步请求
  async login(store, data) {
    const res = await login(data)
    // 将数据传给mutations,设置state的token
    store.commit('setToken', res)
    // 登录,记录时间
    localStorage.setItem('loginTime', Date.now())
  },

  // 发起获取用户信息请求
  async getuserInfo(store) {
    const res = await getuserInfo()
    // 获取员工基础信息,合并
    const detail = await getuserInfoById(res.userId)
    // console.log(detail)
    store.commit('setuserInfo', { ...res, ...detail })
  },
  // 登出
  logout(store) {
    // 登出时,同时调用清空路由函数
    resetRouter()
    store.commit('removeToken')
    store.commit('removeUserInfo')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
